/*
 * Copyright (C) 2016 The Android Open Source Project
 *  Created by  Ant  2016/9/7  15:33
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.ant.cn.view01;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

import com.ant.cn.R;
import com.ant.cn.utils.AntLog;

/**
 * Created by baichuan on 2016/9/7.
 */
public class Surface02 extends SurfaceView implements Runnable, SurfaceHolder.Callback {
    private boolean isRun = false;
    private SurfaceHolder mHolder;
    private Canvas mCanvas;
    private int count = 0;

    public Surface02(Context context) {
        super(context);
        initView();
    }

    public Surface02(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    public Surface02(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }

    private void initView() {
        mHolder = this.getHolder();
        mHolder.addCallback(this);
        this.setFocusable(true);
    }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        isRun = true;
        AntLog.i("surfaceCreated ant");
        new Thread(this).start();
    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        isRun = false;
    }

    @Override
    public void run() {
        while (isRun) {
            synchronized (mHolder) {
                drawView();
                AntLog.i("ant draw circle ant");
            }
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

    private void drawView() {
        mCanvas = mHolder.lockCanvas();
        if (mCanvas == null || mHolder == null)
            return;
        mCanvas.drawColor(Color.BLACK);
        Bitmap map=BitmapFactory.decodeResource(this.getResources(), R.mipmap.ditu);
        mCanvas.drawBitmap(map,0,0,new Paint());
        Paint mpaint = new Paint();
        mpaint.setColor(Color.RED);
        mpaint.setAntiAlias(true);
        mCanvas.drawCircle(200, 200, 150, mpaint);
        mpaint.setColor(Color.BLUE);
        mCanvas.drawCircle(200, 200, 50, mpaint);
        count++;
        mpaint.setTextSize(100);
        mpaint.setColor(Color.YELLOW);
        mCanvas.drawText(count + " ant", 400, 200, mpaint);
        mCanvas.drawText(count + " ant", 400, 500, mpaint);

        mHolder.unlockCanvasAndPost(mCanvas);
    }
}
